perm filename CONV.SAI[PIC,HE] blob
sn#428036 filedate 1979-03-15 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 BEGIN
C00005 ENDMK
C⊗;
BEGIN
REQUIRE "<>" DELIMITERS ;
DEFINE INBSIZE = "8",
OUTBSIZE = "6",
NLINES = "512",
ILINLEN = "128",
OLINLEN = "86" ,
OUTWORDS = " NLINES * OLINLEN " ,
INWORDS = " NLINES * ILINLEN ";
DEFINE CRLF = <'15&'12 >;
DEFINE IWAIT = <OUTSTR("WAITING FOR RETURN");
INCHWL;> ;
BEGIN "IN"
INTEGER VAL, VALMAX, VALMIN ;
INTEGER ICH,OCH,BYTEPTR,OBYTEPTR,I,J,NVAL ;
REAL SCALE ;
INTEGER ARRAY INARRY[1:INWORDS],OUTARRY[1:OUTWORDS] ;
LABEL L1,L2,L3,L4,L5,L6;
L1: IWAIT;
COMMENT FIRST READ THE 8 BIT PACKED IMAGE ;
OUTSTR("INPUT FILE:");
ICH ← OPENFILE("","RC");
ARRYIN (ICH, INARRY[1],INWORDS);
L2:IWAIT ;
COMMENT NOW FIND THE MAX AND THE MIN ;
BYTEPTR ← POINT(INBSIZE,INARRY[1],-1);
VALMAX ← VALMIN ← 0 ;
FOR I ← 1 STEP 1 UNTIL NLINES * NLINES DO
BEGIN
VAL ← ILDB(BYTEPTR) ;
VALMAX ← VALMAX MAX VAL ;
VALMIN ← VALMIN MIN VAL ;
END ;
OUTSTR("MAXVAL IS "&CVS(VALMAX)&CRLF);
OUTSTR("MINVAL IS "&CVS(VALMIN)&CRLF);
L3:IWAIT;
SCALE ← 63.0/(VALMAX - VALMIN) ;
BYTEPTR ← POINT(INBSIZE,INARRY[1],-1);
FOR I ← 1 STEP 1 UNTIL 512 DO
BEGIN
OBYTEPTR ← POINT (OUTBSIZE,OUTARRY[OLINLEN*(I-1)+1],-1);
FOR J ← 1 STEP 1 UNTIL 512 DO
BEGIN
VAL ← ILDB(BYTEPTR) ;
NVAL ← (VAL - VALMIN) * SCALE ;
IDPB(NVAL,OBYTEPTR) ;
END ;
END ;
L4:IWAIT;
OUTSTR("OUTPUT FILE:");
OCH ← OPENFILE("","WC");
ARRYOUT(OCH,OUTARRY[1],OUTWORDS);
L5:IWAIT;
CFILE(ICH);
CFILE(OCH);
END "IN" ;
END ;